// http 这个模块的职责就是帮你创建编写服务器的

// 1. 加载 http 核心模块
var http = require('http')

// 2. 使用 http.createServer() 方法创建一个 Web 服务器
//    返回一个 Server 实例
var server = http.createServer()

// 3. 服务器要干嘛？
//    提供服务：对 数据的服务
//    发请求
//    接收请求
//    处理请求
//    给个反馈（发送响应）
//    注册 request 请求事件
//    当客户端请求过来，就会自动触发服务器的 request 请求事件，然后执行第二个参数：回调处理函数
// request 请求事件处理函数，需要接收两个参数：
//    Request 请求对象
//        请求对象可以用来获取客户端的一些请求信息，例如请求路径
//    Response 响应对象
//        响应对象可以用来给客户端发送响应消息
server.on('request', function (request,response) {
  console.log('收到客户端的请求了');
  console.log('收到客户端的请求了，请求路径是：' + request.url)

  // response 对象有一个方法：write 可以用来给客户端发送响应数据
  // write 可以使用多次，但是最后一定要使用 end 来结束响应，否则客户端会一直等待
    //   response.write('hello');
    //   response.write(' nodejs');
    //   // 告诉客户端，我的话说完了，你可以呈递给用户了
    //   response.end();  

   // 上面的方式比较麻烦，推荐使用更简单的方式，直接 end 的同时发送响应数据
  // response.end('hello nodejs');

  // 根据不同的请求路径发送不同的响应结果
  // 1. 获取请求路径
  //    req.url 获取到的是端口号之后的那一部分路径
  //    也就是说所有的 url 都是以 / 开头的
  // 2. 判断路径处理响应

    var url = request.url

    if (url === '/') {
        response.end('index page')
    } else if (url === '/login') {
        response.end('login page')
    } else if (url === '/products') {
        var products = [{
            name: '苹果 X',
            price: 8888
        },
        {
            name: '菠萝 X',
            price: 5000
        },
        {
            name: '小辣椒 X',
            price: 1999
        }
        ]

        // 响应内容只能是二进制数据或者字符串
        //  数字
        //  对象
        //  数组
        //  布尔值
        response.end(JSON.stringify(products))
    }else if(url === '/plain'){
         // 在服务端默认发送的数据，其实是 utf8 编码的内容
        // 但是浏览器不知道你是 utf8 编码的内容
        // 浏览器在不知道服务器响应内容的编码的情况下会按照当前操作系统的默认编码去解析
        // 中文操作系统默认是 gbk
        // 解决方法就是正确的告诉浏览器我给你发送的内容是什么编码的
        // 在 http 协议中，Content-Type 就是用来告知对方我给你发送的数据内容是什么类型
        // text/plain 就是普通文本
        response.setHeader('Content-Type', 'text/plain; charset=utf-8')
        response.end('hello 世界');
    }else if(url === '/html'){
        // 如果你发送的是 html 格式的字符串，则也要告诉浏览器我给你发送是 text/html 格式的内容
        response.setHeader('Content-Type', 'text/html; charset=utf-8')
        response.end('<p>hello html <a href="">点我</a></p>')
    }else {
        response.end('404 Not Found.')
    }
})

// 4. 绑定端口号，启动服务器
server.listen(3000, function () {
  console.log('服务器启动成功了，可以通过 http://127.0.0.1:3000/ 来进行访问')
})
